/**
 * 用户信息管理工具函数
 */

/**
 * 获取用户昵称
 * @param {Object} store - Vuex store实例
 * @returns {String} 用户昵称
 */
export const getUserNickname = (store) => {
	return store.getters.userNickname
}

/**
 * 获取用户头像
 * @param {Object} store - Vuex store实例
 * @returns {String} 用户头像URL
 */
export const getUserAvatar = (store) => {
	return store.getters.userAvatar
}

/**
 * 获取完整用户信息
 * @param {Object} store - Vuex store实例
 * @returns {Object} 用户信息对象
 */
export const getUserInfo = (store) => {
	return store.getters.userInfo
}

/**
 * 更新用户昵称
 * @param {Object} store - Vuex store实例
 * @param {String} nickname - 新的昵称
 */
export const updateUserNickname = (store, nickname) => {
	store.commit('updateUserNickname', nickname)
}

/**
 * 更新用户头像
 * @param {Object} store - Vuex store实例
 * @param {String} avatar - 新的头像URL
 */
export const updateUserAvatar = (store, avatar) => {
	store.commit('updateUserAvatar', avatar)
}

/**
 * 更新用户信息（昵称和头像）
 * @param {Object} store - Vuex store实例
 * @param {Object} profile - 用户信息对象 {nickname, avatar}
 */
export const updateUserProfile = (store, profile) => {
	store.commit('updateUserProfile', profile)
}

/**
 * 从服务器获取并更新用户信息
 * @param {Object} store - Vuex store实例
 * @param {Object} service - 服务实例
 */
export const fetchAndUpdateUserInfo = async (store, service) => {
	try {
		const res = await service({
			url: '/api/member.user/getUserInfo'
		})
		
		if (res.code === 1 && res.data) {
			// 更新用户信息
			store.commit('getUserInfo', res.data)
			return res.data
		}
	} catch (error) {
		console.error('获取用户信息失败:', error)
		throw error
	}
}

/**
 * 上传头像并更新用户信息
 * @param {Object} store - Vuex store实例
 * @param {Object} service - 服务实例
 * @param {String} filePath - 文件路径
 */
export const uploadAvatarAndUpdate = async (store, service, filePath) => {
	try {
		// 上传头像
		const uploadRes = await uni.uploadFile({
			url: 'https://www.shuyunpt.com/api/common/upload',
			filePath: filePath,
			name: 'file',
			header: {
				'Authorization': uni.getStorageSync('token') || ''
			}
		})
		
		const uploadData = JSON.parse(uploadRes.data)
		
		if (uploadData.code === 1) {
			const avatarUrl = uploadData.data.url
			
			// 更新用户头像
			const updateRes = await service({
				url: '/api/member.user/updateAvatar',
				data: {
					avatar: avatarUrl
				}
			})
			
			if (updateRes.code === 1) {
				// 更新本地存储
				updateUserAvatar(store, avatarUrl)
				return avatarUrl
			}
		}
	} catch (error) {
		console.error('上传头像失败:', error)
		throw error
	}
}

/**
 * 更新用户昵称
 * @param {Object} store - Vuex store实例
 * @param {Object} service - 服务实例
 * @param {String} nickname - 新的昵称
 */
export const updateNickname = async (store, service, nickname) => {
	try {
		const res = await service({
			url: '/api/member.user/updateNickname',
			data: {
				nickname: nickname
			}
		})
		
		if (res.code === 1) {
			// 更新本地存储
			updateUserNickname(store, nickname)
			return true
		}
	} catch (error) {
		console.error('更新昵称失败:', error)
		throw error
	}
} 